ci: manage toolchains with mise - #11
Merged
Merged
Conversation
Replace dtolnay/rust-toolchain and typst-community/setup-typst with jdx/mise-action so tool versions are managed in mise.toml as a single source of truth for local development and CI. - Pin rust 1.97.1 (with rustfmt/clippy components) and typst 0.15.1 - Install only rust via install_args for jobs that do not need typst - Add rustup target add step for non-cross release builds - Keep Swatinem/rust-cache since it handles cargo caching, not toolchains
📝 WalkthroughWalkthroughChangesToolchain migration
Estimated code review effort: 2 (Simple) | ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)
39-41: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winPin the
misebinary at every action call.
jdx/mise-actionuses the latest mise release whenversionis omitted, so the SHA pin on the action does not pin the manager. (raw.githubusercontent.com)
.github/workflows/ci.yml#L39-L41: add the approved miseversion..github/workflows/ci.yml#L52-L52: add the approved miseversion..github/workflows/release.yml#L41-L43: add the approved miseversion..github/workflows/release.yml#L101-L103: add the approved miseversion.Proposed action input
- uses: jdx/mise-action@7e36c90d9ab29c415a2384db3006f3ec8a8cc654 # v4.2.4 with: + version: <approved-mise-version> install_args: rust🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/ci.yml around lines 39 - 41, The jdx/mise-action in .github/workflows/ci.yml lines 39-41 and lines 52-52, and in .github/workflows/release.yml lines 41-43 and lines 101-103 must each include a version input parameter to pin the mise binary manager version. Currently the action SHA pins only the action code itself, not the manager binary that gets installed. Add the approved mise version value to the with block of each jdx/mise-action call across all four locations to ensure the manager binary version is pinned consistently.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 39-41: The jdx/mise-action in .github/workflows/ci.yml lines 39-41
and lines 52-52, and in .github/workflows/release.yml lines 41-43 and lines
101-103 must each include a version input parameter to pin the mise binary
manager version. Currently the action SHA pins only the action code itself, not
the manager binary that gets installed. Add the approved mise version value to
the with block of each jdx/mise-action call across all four locations to ensure
the manager binary version is pinned consistently.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 38ff2934-1c35-4a55-bb5c-7d9c6a340eeb
📒 Files selected for processing (3)
.github/workflows/ci.yml.github/workflows/release.ymlmise.toml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Manage toolchain dependencies with mise across CI and release workflows, making
mise.tomlthe single source of truth for tool versions in both local development and CI.Changes
rust = 1.97.1(withrustfmt/clippycomponents) andtypst = 0.15.1(previouslylatest, now pinned for reproducibility).dtolnay/rust-toolchainandtypst-community/setup-typstwithjdx/mise-action(SHA-pinned, v4.2.4). Lint/test jobs install only rust viainstall_args; the compile-test job runs a full install to also get typst. The matrixcomponentsfield is gone since components now live inmise.toml.dtolnay/rust-toolchainwithjdx/mise-actionin all three jobs. Cross-compilation targets are added with an explicitrustup target addstep for non-cross builds — mise's rust backend reuses the standard rustup installation and setsRUSTUP_TOOLCHAIN, so the target lands on the pinned toolchain.Swatinem/rust-cachestays as is: it handles cargo registry/target caching, which mise does not cover.Verification
cargo fmt --check,cargo clippy -- -D warnings, andcargo test(60 tests) all pass locally under the mise-managed 1.97.1 toolchain.actionlint.Note: release.yml only runs on tag pushes, so it is worth a manual
workflow_dispatchrun after merge to confirm the Windows/macOS runners.Summary by CodeRabbit